//app.js
App({
    onLaunch: function() {
        wx.showLoading({
            title: '加载中',
            mask: true
        })
        if (!wx.cloud) {
            console.error('请使用 2.2.3 或以上的基础库以使用云能力')
        } else {
            wx.cloud.init({
                traceUser: true,
            })
        }
        // 获取用户信息
        wx.getSetting({
            success: res => {
                if (res.authSetting['scope.userInfo']) {
                    // 已经授权，可以直接调用 getUserInfo 获取头像昵称，不会弹框
                    wx.getUserInfo({
                        success: res => {
                            this.globalData.userInfo = res.userInfo
                        },
                        fail: err => {
                            wx.showToast({
                                title: err,
                            })
                        }
                    })
                }
            },
            fail: err => {
                wx.showToast({
                    title: err,
                })
            }
        })
        this.onGetOpenid(() => {
            const db = wx.cloud.database()
            //获取用户基础信息
            db.collection('userInfo').where({
                openId: this.globalData.openid
            }).get({
                success: res => {
                    if (res.data.length === 0) {
                        //如果用户不存在则为其建库
                        db.collection("userInfo").add({
                            data: {
                                openId: this.globalData.openid,
                                orderHistory: [],
                                score: 5000,
                            },
                            success: res => {
                                wx.hideLoading()
                                wx.showToast({
                                    title: '成功初始化用户数据',
                                })
                                this.globalData.userInfo.score = 5000;
                                this.globalData.userInfo._id = res._id;
                            },
                            fail: res => {
                                wx.showToast({
                                    title: '新用户初始化失败,请稍后再试',
                                })
                            }
                        })
                    } else {
                        this.globalData.userInfo.score = res.data[0].score
                        this.globalData.userInfo._id = res.data[0]._id;
                        wx.hideLoading()
                    }
                },
                fail: err => {
                    wx.showToast({
                        icon: 'none',
                        title: '查询记录失败'
                    })
                    wx.hideLoading()
                    console.error('[数据库] [查询记录] 失败：', err)
                }
            })
        });

    },
    onGetOpenid: function(cb) {
        // 调用云函数
        wx.cloud.callFunction({
            name: 'login',
            data: {},
            success: res => {
                this.globalData.openid = res.result.openid
                cb && cb()
            },
            fail: err => {
                console.error('[云函数] [login] 调用失败', err)
            }
        })
    },
    globalData: {
        userInfo: null,
        openid: null
    }
})